package com.iplant.aps.service.po.fpc;

import java.io.Serializable;
import java.util.*;

public class FPCRoutePart implements Serializable {

    private static final long serialVersionUID = 1L;

    public int ID = 0;

    public int RouteID = 0; // 工艺版本ID

    public int PartID = 0;

    public String Code = "";

    /**
     * 主线层级
     */
    public int OrderID = 0;

    public String Name = "";

    public Calendar CreateTime = Calendar.getInstance();

    public int CreatorID = 0;

    public String Creator = "";

    public String VersionNo = ""; // 工艺版本

    public String RouteName = ""; // 工艺名称

    public int PrevPartID = 0;// 上工段

    /**
     * 标准工时
     */
    public Double StandardPeriod = 0.0;

    /**
     * 调整工时 新增字段
     */
    public Double ActualPeriod = 0.0;

    /**
     * key PartID Value : Condition value: 0 主线也是下个模块
     */
    public Map<String, String> NextPartIDMap = new HashMap<String, String>();// 上工段路线ID

    public List<FPCRoutePartPoint> PartPointList = new ArrayList<>(); // 工序列表

    /**
     * 转序控制
     */
    public int ChangeControl = 0;
    /**
     * 版本信息
     */
    public String Version = "";
    /**
     * 工序总数
     */
    public int ItemCount = 0;

    //辅助属性
    /**
     * 计划开工日期
     */
    public Calendar PlanStartDate = Calendar.getInstance();
    /**
     * 计划完工日期
     */
    public Calendar PlanEndDate = Calendar.getInstance();
    /**
     * 完工日期
     */
    public Calendar FinishDate = Calendar.getInstance();
    /**
     * 工序完工数量
     */
    public int PartPointFinishSize = 0;

    public FPCRoutePart() {
        this.Name = "";
        this.Creator = "";
        this.CreateTime = Calendar.getInstance();
        this.PartPointList = new ArrayList<>();
    }

    public FPCRoutePart Clone() {
        FPCRoutePart wItem = new FPCRoutePart();
        wItem.ID = this.ID;
        wItem.RouteID = this.RouteID;
        wItem.PartID = this.PartID;

        wItem.CreatorID = this.CreatorID;
        wItem.CreateTime = this.CreateTime;
        wItem.Creator = this.Creator;

        wItem.PartPointList = new ArrayList<FPCRoutePartPoint>(this.PartPointList);
        return wItem;
    }

    public Calendar getPlanStartDate() {
        return PlanStartDate;
    }

    public void setPlanStartDate(Calendar planStartDate) {
        PlanStartDate = planStartDate;
    }

    public Calendar getPlanEndDate() {
        return PlanEndDate;
    }

    public void setPlanEndDate(Calendar planEndDate) {
        PlanEndDate = planEndDate;
    }

    public Calendar getFinishDate() {
        return FinishDate;
    }

    public void setFinishDate(Calendar finishDate) {
        FinishDate = finishDate;
    }

    public int getPartPointFinishSize() {
        return PartPointFinishSize;
    }

    public void setPartPointFinishSize(int partPointFinishSize) {
        PartPointFinishSize = partPointFinishSize;
    }

    public int getID() {
        return ID;
    }

    public void setID(int iD) {
        ID = iD;
    }

    public int getRouteID() {
        return RouteID;
    }

    public String getVersion() {
        return Version;
    }

    public void setVersion(String version) {
        Version = version;
    }

    public void setRouteID(int routeID) {
        RouteID = routeID;
    }

    public int getPartID() {
        return PartID;
    }

    public void setPartID(int partID) {
        PartID = partID;
    }

    public int getOrderID() {
        return OrderID;
    }

    public void setOrderID(int orderID) {
        OrderID = orderID;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public Calendar getCreateTime() {
        return CreateTime;
    }

    public void setCreateTime(Calendar createTime) {
        CreateTime = createTime;
    }

    public int getCreatorID() {
        return CreatorID;
    }

    public void setCreatorID(int creatorID) {
        CreatorID = creatorID;
    }

    public String getCreator() {
        return Creator;
    }

    public void setCreator(String creator) {
        Creator = creator;
    }

    public String getVersionNo() {
        return VersionNo;
    }

    public void setVersionNo(String versionNo) {
        VersionNo = versionNo;
    }

    public String getRouteName() {
        return RouteName;
    }

    public void setRouteName(String routeName) {
        RouteName = routeName;
    }

    public List<FPCRoutePartPoint> getPartPointList() {
        return PartPointList;
    }

    public void setPartPointList(List<FPCRoutePartPoint> partPointList) {
        PartPointList = partPointList;
    }

    public int getPrevPartID() {
        return PrevPartID;
    }

    public void setPrevPartID(int prevPartID) {
        PrevPartID = prevPartID;
    }

    public Map<String, String> getNextPartIDMap() {
        return NextPartIDMap;
    }

    public void setNextPartIDMap(Map<String, String> nextPartIDMap) {
        NextPartIDMap = nextPartIDMap;
    }

    public String getCode() {
        return Code;
    }

    public void setCode(String code) {
        Code = code;
    }

    public Double getStandardPeriod() {
        return StandardPeriod;
    }

    public void setStandardPeriod(Double standardPeriod) {
        StandardPeriod = standardPeriod;
    }

    public Double getActualPeriod() {
        return ActualPeriod;
    }

    public void setActualPeriod(Double actualPeriod) {
        ActualPeriod = actualPeriod;
    }

    public int getChangeControl() {
        return ChangeControl;
    }

    public void setChangeControl(int changeControl) {
        ChangeControl = changeControl;
    }

    public int getItemCount() {
        return ItemCount;
    }

    public void setItemCount(int itemCount) {
        ItemCount = itemCount;
    }
}
